unit ProdutoRecordFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LR_BarC, LResources, Forms, Controls, Graphics,
  Dialogs, StdCtrls, DBCtrls, ActnList, Buttons, ComCtrls, DBGrids, ExtCtrls,
  MainRecordFr, RLReport, RLBarcode, ACBrBarCode;

type

  { TProdutoRecordFrame }

  TProdutoRecordFrame = class(TMainRecordFrame)
    DBEdit1: TDBEdit;
    GerarAction: TAction;
    ImprimirAction: TAction;
    code: TACBrBarCode;
    Gerar: TBitBtn;
    desc_produto1: TDBEdit;
    CancelarLoteActionList: TAction;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBGrid1: TDBGrid;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    DBLookupComboBox3: TDBLookupComboBox;
    DBMemo1: TDBMemo;
    GroupBox: TGroupBox;
    Imprimir: TBitBtn;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    PageControl: TPageControl;
    Panel2: TPanel;
    SalvarLoteActionList: TAction;
    AlterarLoteActionList: TAction;
    IDProdutoEdit: TDBEdit;
    codigo_barra: TDBEdit;
    desc_produto: TDBEdit;
    DBGroupBox1: TDBGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    CustoTabSheet: TTabSheet;
    HistoricoTabSheet: TTabSheet;
    procedure codigo_barraChange(Sender: TObject);
    procedure GerarActionExecute(Sender: TObject);
    procedure CodBarraActionExecute(Sender: TObject);
    procedure desc_produtoChange(Sender: TObject);
    procedure ImprimirActionExecute(Sender: TObject);
    procedure PageControlChange(Sender: TObject);
    procedure ControlaBotoes(); override;
    procedure SalvarActionExecute(Sender: TObject);
    procedure SalvarSpeedClick(Sender: TObject);
    constructor Create(TheOwner: TComponent); override;

  private
    { private declarations }
  public
    { public declarations }
  end;

implementation

uses ProdutoDM, RelatorioDM, MainDM;

procedure TProdutoRecordFrame.CodBarraActionExecute(Sender: TObject);
begin
  ControlaBotoes();
end;

procedure TProdutoRecordFrame.codigo_barraChange(Sender: TObject);
begin
  code.Text := codigo_barra.Text;
end;

procedure TProdutoRecordFrame.GerarActionExecute(Sender: TObject);
begin
   ProdutoData.ProdutoZQuery.FieldByName('codigo_barra').AsString :=
    ProdutoData.GeraCodigoBarra();
end;

procedure TProdutoRecordFrame.desc_produtoChange(Sender: TObject);
begin
   if (ProdutoData.DataSetState() in [mdsEditing, mdsInserting]) then begin
  DBLookupComboBox1.Enabled := True;
  DBLookupComboBox2.Enabled := True;
  DBLookupComboBox3.Enabled := True;
   end;
end;

procedure TProdutoRecordFrame.ImprimirActionExecute(Sender: TObject);
begin
     if codigo_barra.Text <> '' then begin
    RelatorioData.MostraRelatorio(codigo_barra.Text);
  end;
end;

procedure TProdutoRecordFrame.PageControlChange(Sender: TObject);
begin
  if PageControl.ActivePage = HistoricoTabSheet then begin
    if IDProdutoEdit.Text <> '' then begin
      ProdutoData.BuscaCustoProdutos(IDProdutoEdit.Text);
    end;
  end;
end;

procedure TProdutoRecordFrame.ControlaBotoes();
begin
  inherited ControlaBotoes;
  GerarAction.Enabled := SalvarAction.Enabled;
  ImprimirAction.Enabled:=AlterarAction.Enabled;
  if AlterarAction.Enabled = True then begin
    HistoricoTabSheet.TabVisible := True;
  end else begin
    HistoricoTabSheet.TabVisible := False;
  end;
end;

procedure TProdutoRecordFrame.SalvarActionExecute(Sender: TObject);
begin
  if (codigo_barra.Text = '') then begin
    codigo_barra.Text := ProdutoData.AlteraCodigoBarra();
  end else begin
    ProdutoData.ProdutoZQuery.Post();
  end;
  ControlaBotoes();
end;

procedure TProdutoRecordFrame.SalvarSpeedClick(Sender: TObject);
begin
  if codigo_barra.Text <> '' then begin
    RelatorioData.SalvaPDF(codigo_barra.Text);
  end;
end;

constructor TProdutoRecordFrame.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  PageControl.ActivePage:= CustoTabSheet;
end;

{ TProdutoRecordFrame }


initialization
  {$I produtorecordfr.lrs}

end.
